# -*- coding: utf-8 -*-

# test_CriarBD
# demostra um teste na criacao
# de base de dados
# Elisio Goncalves Ribeiro

import sqlite3
import re



def ligacaoABD(endereco):
    
    try:
##        endereco = endereco.encode("utf8")
        
        # conexao/criacao no disco da Base de Dados
        bd_con = sqlite3.connect(endereco)
        
    except:
         wx.MessageBox(u"verifiquue o nome da BD!", "Aviso")

    # cricao do cursor para execucao dos comandos sobre a BD
    bdcursor = bd_con.cursor()

def criarTabelaTipos_Estabelecimento(listaDados):
    bdcursor.execute('CREATE TABLE Tipo_Estabelecimento (designacao VARCHAR(50))')
    
    # comando de preenchimento
    sqlComd = "INSERT INTO Tipo_Estabelecimento (designacao) VALUES (?)"
    
    bdcursor.executemany(sqlCmd, listaDados)
    pass
    
def criarTabelaNomes_Estabelecimento():
    bdcursor.execute('CREATE TABLE Nome_Estabelecimento (designacao VARCHAR(50))')
                        
def criarTabelaRegimes_Tempo():
    bdcursor.execute('CREATE TABLE Regimes_Tempo (id INTEGER PRIMARY KEY,\
                         designacao VARCHAR(50))')
    pass

def criarTabelaUltimos_Graus():
    bdcursor.execute('CREATE TABLE Ultimos_Graus (nome_graus VARCHAR(50))')
    pass
    
def criarTabelaProfessores():
    bdcursor.execute('CREATE TABLE Professores (cod_docente INTEGER PRIMARY KEY,\
                         nome_completo VARCHAR(50))')
    pass

def criarTabelaCursos():
    bdcursor.execute('CREATE TABLE Cursos (designacao VARCHAR(50))')
    pass

def criarTabelaCategorias():
    bdcursor.execute('CREATE TABLE Cursos (nome VARCHAR(50))')
    pass
    
def criarTabelaFicha_Curso(cursor, lstDocente):

    #criacao da tabela com os dados do docentes na BD
    bdcursor.execute('CREATE TABLE Ficha_curso (id INTEGER PRIMARY KEY,\
                         nomeProfessor VARCHAR(50), grau VARCHAR(30),\
                         course_espec VARCHAR(50), ano INTEGER(10))')
    pass
    
def criarTabelaFicha_Docentes(cursor, lstDocente):

    #criacao da tabela com os dados do docentes na BD
    bdcursor.execute('CREATE TABLE Pessoal_Docente (id INTEGER PRIMARY KEY,\
                        nomeProfessor VARCHAR(50), grau VARCHAR(30),\
                        course_espec VARCHAR(50), estabelec VARCHAR(50), \
                        categoria VARCHAR(50), \
                        tipo_estabelecimento VARCHAR(50), ano INTEGER(10))')
    pass
    
##import definicoes

##
### link para o site Rebides08
##URL08 = 'http://www.rebides.oces.mctes.pt/Rebides08/rebid_m2.asp?CodR='
##
##
###create table Pessoal_Docente
####def criarTabelaDocentes(cursor, lstDocente):
####
####    #criacao da tabela com os dados do docentes na BD
####    cursor.execute('CREATE TABLE Pessoal_Docente (cod_docente INTEGER PRIMARY KEY,\
####                         nomeCompleto VARCHAR(50), degree VARCHAR(30),\
####                         course_espec VARCHAR(50), categ VARCHAR(50),\
####                         modus VARCHAR(30))')
####
##### uma string com o comando SQL a executar sobre a BD
####    sqlComd = "INSERT INTO Pessoal_Docente (full_name, degree, course_espec, \
####                        categ, modus) VALUES (?,?,?,?,?)"
##
###verificaçao e introduçao dos dados
######
####    for linha in  range(1, len(lstDocente)):
####       # linha = (linha[0],linha(1),linha[2].strip(),linha[3].strip(),linha[4],linha[5])
####
####        cursor.execute(sqlComd, lstDocente[linha])
####   
####        
###criacaçao das tabelas
####def criarTab_Universidades(cursor):
####
####    #criacao da tabela com os dados do tipos de instituioes universitarias na BD
####    cursor.execute('CREATE TABLE Tpo_Instituicao (id INTEGER PRIMARY KEY,\
####                         full_name VARCHAR(50), code CHAR(10))')
####    
####    #criacao da tabela com os dados do conjunto de escolas universitarias na BD
####    cursor.execute('CREATE TABLE Conj_Universidades (full_name VARCHAR(50), city VARCHAR(10))')
####    
####    #criacao da tabela com os dados do codigo das escolas na BD
####    cursor.execute('CREATE TABLE Codigo_Universidades (id INTEGER PRIMARY KEY, codR CHAR(10))')
####    
####    #criacao da tabela com com a relaçao nome escola-codigo, os codigos relacionados
####    #a cadanome da escola na BD
####    cursor.execute('''CREATE TEMP TABLE Univ_Codigo\ 
####                            (id INTEGER PRIMARY KEY,\
####                            full_name VARCHAR(50) REFERENCES Conj_Universidades(full_name),\
####                            codR CHAR(10) REFERENCES Codigo_Universidades(id))''')
####
####    #criacao da tabela com os dados do codigo e nome das escolas das 
####    #das universidades na BD
####    cursor.execute('''CREATE TABLE Cod_Escola_Univ (id INTEGER PRIMARY KEY,\
####                            codR CHAR(10) REFERENCES Conj_Esc_Cod(id),\
####                            full_name VARCHAR(50))''')
####                            
####    ##para ter os dados para a combo de nomes de instituicao tipo ipbeja
####    ##tenho que escolhere fazer select de acordo com o escolhido nacombo acima
####    ##por isso tenho q ter uma predifinicao para poder preencher tudo
####
####    NLocals = []
####    listcod = []
####    dadosCR = definicoes.CR.items()
####
####    listaInst = getDataToUtf(dadosCR)
####    cursor.executemany('INSERT INTO Tpo_instituicao (full_name, code) VALUES (?,?)', listaInst)
####
####    conjEU = definicoes.conjunto_escolas_universitarias.items()
####    for dados in conjEU:
####        local = dados[0].split()[-1]        #devidir pelos espaços(' ') e obter a ultima palavra
####        nomeLocal = (dados[0], local)       #contruir tuplo (nomeescola, local)
####        NLocals.append(nomeLocal)           #adicionar a lista a retornar
####
####        for i in range(0, len(dados[1])):
####            listcod.append((dados[1][i],))
####  
####    ##preenchimento da tabela com os nomes dos conjuntos das instituiçoes universitarias
####    cjNLst = getDataToUtf(NLocals)
####    cursor.executemany('INSERT INTO Conj_Universidades (full_name, city) VALUES (?,?)', cjNLst)
####
####    ##preenchimento da tabela com os codigos do conjunto das instituiçoes universitarias    
####    cursor.executemany('INSERT INTO Cod_EscolasUniv (codR) VALUES (?)', listcod)
####
####    ##preenchimento da tabela com o conjunto nome-codigos instituiçoes universitarias  
####    lst = getCodInLst(conjEU)
####    lst = getDataToUtf(lst)
####    cursor.executemany('INSERT INTO Conj_Esc_Cod (full_name, codR) VALUES (?,?)', lst)
####    
####    ##preenchimento da tabela com codigo-nome das instituiçoes universitarias     
####    CEU = definicoes.cod_escolas_universitarias.items()
####    ceuLst = getDataToUtf(CEU)
####    cursor.executemany('INSERT INTO Cod_Escola_Univ (codR, full_name) VALUES (?,?)', ceuLst)
####    
####    
#####criacaçao das tabelas
####def createPoliTable(cursor):
####
####    #criacao da tabela com os dados do conjunto de escolas universitarias na BD
####    cursor.execute('CREATE TABLE Conj_EscolasPol (fullName VARCHAR(50), city VARCHAR(10))')
####    
####    #criacao da tabela com os dados do codigo das escolas na BD
####    cursor.execute('CREATE TABLE Cod_EscolasPol (id INTEGER PRIMARY KEY, codR CHAR(10))')
####    
####    #criacao da tabela com os dados do codigo das escolas na BD
####    cursor.execute('''CREATE TEMP TABLE Conj_EscPol_Cod (id INTEGER PRIMARY KEY,\
####                           full_name VARCHAR(50) REFERENCES Conj_Esc_universitaria(full_name),\
####                                    codR CHAR(10) REFERENCES Cod_EscolasUniv(id))''')
####
####    #criacao da tabela com os dados do codigo das escolas na BD
####    cursor.execute('''CREATE TABLE Cod_Esc_politecnica (id INTEGER PRIMARY KEY,\
####                           codR CHAR(10) REFERENCES Conj_Esc_Cod(id),\
####                           full_name VARCHAR(50))''')
####
####    CjEP = definicoes.cj.items()
####    NLocals = []
####    listcod = []
####
####    for data in CjEP:
####        local = data[0].split()[-1]
####        rows = (data[0], local)
####        NLocals.append(rows)
####     
####        for i in range(0, len(data[1])):
####            listcod.append((data[1][i],))
####
####
####    ##preenchimento da tabela com os nomes dos conjuntos das instituiçoes politecnicas
####    cjNLst = getDataToUtf(NLocals)
####    cursor.executemany('INSERT INTO Conj_EscolasPol (fullName, city) VALUES (?,?)', cjNLst)
####    
####    ##preenchimento da tabela com os codigos do conjunto das instituiçoes politecnicas 
####    cursor.executemany('INSERT INTO Cod_EscolasPol (codR) VALUES (?)', listcod)
####
####    ##preenchimento da tabela com o conjunto nome-codigos instituiçoes politecnicas 
####    lst = getCodInLst(CjEP)
####    lst = getDataToUtf(lst)
####    cursor.executemany('INSERT INTO Conj_EscPol_Cod (full_name, codR) VALUES (?,?)', lst)
####    
####    ##preenchimento da tabela com codigo-nome das instituiçoes politecnicas    
####    cE = definicoes.ce.items()
####    cELst = getDataToUtf(cE)
####    cursor.executemany('INSERT INTO Cod_Esc_politecnica (codR, full_name) VALUES (?,?)', cELst)
####    
#### 
#####criacaçao das tabelas
####def createOtherTable(cursor):
####
####    #criacao da tabela com os dados de instituioes da UCPortuguesa na BD
####    cursor.execute('''CREATE TABLE L_E_univCPortuguesa (id INTEGER PRIMARY KEY,\
####                           cod CHAR(10) REFERENCES Conj_Esc_Cod(id),\
####                           fName VARCHAR(50))''')
####
####    #criacao da tabela com os dados de instituioes universitarias autonomas na BD
####    cursor.execute('''CREATE TABLE L_I_univAuto (id INTEGER PRIMARY KEY,\
####                           codR CHAR(10) REFERENCES Conj_Esc_Cod(id),\
####                           full_name VARCHAR(50))''')
####
####    ##preenchimento da tabela com codigo-nome das instituiçoes universitarias autonomas
####    IUA = definicoes.ceua.items()
####    ceuaLst = getDataToUtf(IUA)
####    cursor.executemany('INSERT INTO L_I_univAuto (codR, full_name) VALUES (?,?)', ceuaLst)
####
####    ##preenchimento da tabela com codigo-nome das instituiçoes univ. Catolica portuguesa 
####    UCP = definicoes.ceucp.items()
####    ucpLst = getDataToUtf(UCP)
####    cursor.executemany('INSERT INTO L_E_univCPortuguesa (cod, fName) VALUES (?,?)', ucpLst)
####    
##
##
##def storeData(codR, codP, db_path):
##    '''
##    considerando ja existirem as outras informacoes introduzidas
##    obtem-se os dados da lista criada pelo modulo "processarMCIES"
##    e introduz os dados na tabela L_docentes
##    '''
##
##    # conexao/criacao no disco da Base de Dados
##    bd_conex = sqlite3.connect(db_path)
##
##    # cricao do cursor para execucao dos comandos sobre a BD
##    cursor = bd_conex.cursor()
##
####    cursor.execute('DROP TABLE IF EXISTS Tpo_Instituicao ')
####    cursor.execute('DROP TABLE IF EXISTS Conj_Universidades')
####    cursor.execute('DROP TABLE IF EXISTS Cod_EscolasUniv')
####    cursor.execute('DROP TABLE IF EXISTS Conj_Esc_Cod')
####    cursor.execute('DROP TABLE IF EXISTS Cod_Escola_Univ')
####    
####    cursor.execute('DROP TABLE IF EXISTS Conj_EscolasPol')
####    cursor.execute('DROP TABLE IF EXISTS Cod_EscolasPol')
####    cursor.execute('DROP TABLE IF EXISTS Conj_EscPol_Cod')    
####    cursor.execute('DROP TABLE IF EXISTS Cod_Esc_politecnica')
####
####    cursor.execute('DROP TABLE IF EXISTS L_I_univAuto')
####    cursor.execute('DROP TABLE IF EXISTS L_E_univCPortuguesa')
####    cursor.execute('DROP TABLE IF EXISTS Pessoal_Docente')
##    
###******************* UNIVERSITARIAS ******************************
##
##    createUnivTable(cursor)
##
###******************* AUTONOMAS & UNIV CATOL PORTUGUESA************
##
##    createOtherTable(cursor)
##
###******************* POLITECNICAS ********************************
##
##    createPoliTable(cursor)
##
###************TABELA PARA OS DADOS DO PESSOAL DOCENTE**************
##    lsttmp = transfDataOnline(codR, codP)
##    createTTable(cursor, lsttmp)
##
##
##
##   
###************************************************ fecho *********************************************************************
##
##    cursor.close()
##    bd_conex.commit()
##
##def getDataToUtf(tupleList):
##    '''get data and decode it to unicode
##       and return a tuple list'''
##    changedlst = []
##    new = ()
##    for tuple1 in tupleList:
##        if(tuple1[1] == 'Castelo'):
##            new = ('Viana do ' + tuple1[1],)
##            cod = new[0].decode("utf8")      
##
##        elif(tuple1[1] == 'Branco'):
##            new = ('Castelo ' + tuple1[1],)
##            cod = new[0].decode("utf8")
##        else:
##            cod = tuple1[1].decode("utf8")
##
##        name = tuple1[0].decode("utf8")
##        changedlst.append((name, cod))
##    return changedlst
##
##def codingToUtf(tList):
##    '''get data and decode it to utf8
##       and return a list'''
##    changedlst = []
##    for obj in tList:
##        name = obj.decode("utf8")
##        changedlst.append(name)
##    return changedlst
##
##def getCodInLst(dicObjt):
##    '''get a dictionarie lis
##        and returns a list of codes'''
##    first = dicObjt[0]
##    lstTuples = []
##    for single in dicObjt:
##        tmh = len(single[1])-1
##        for k in range(1, len(single[1])):
##            lstTuples.append((single[0], single[1][k]))
##    return lstTuples
##
##
##def transfDataOnline(codr, codp):
##    '''get data online to a lst and return it'''
##    lista = []
##    lista = definicoes.processarMCIES(codr, codp, URL08)
##    '''introduzir os dados na tabela do docente'''
##
##    return lista
##
##
##
####consulta a BD-mostra 5 dos docentes
##def getTeacherInfo(dbfiename):
##    '''get data on the database to a lst and return it'''
##    tlist =[]
##    try:
##        db_con = sqlite3.connect(dbfiename)
##        cur = db_con.cursor()
##        tlist = cur.execute('SELECT * FROM Pessoal_Docente')
##        tlist =tlist.fetchall()
##        cur.close()
##        db_con.close()
##        print tlist
##        return tlist
##    except sqlite3.OperationalError: pass
##
##def tipo_nomes_Instituicao(enderecoBd):
##    listaTipo =[]
##    try:
##        db_con = sqlite3.connect(enderecoBd)
##        cur = db_con.cursor()
##        listaTipo = cur.execute('SELECT full_name FROM L_Tpo_Instituicao')
##        listaTipo = listaTipo.fetchall()
##        #listaNomes = cur.execute('SELECT full_name FROM 
##        cur.close()
##        db_con.close()
##        #print listaTipo
##        return codingToUtf8(listaTipo)
##    except sqlite3.OperationalError: pass 
##    
##def codingToUtf8(lista):
##    '''codifica a informação em utf8 e retorna-os numa lista'''
##    novalsta = []
##    for obj in lista:
##        nome = obj[0].encode("utf8")
##        novalsta.append(nome)
##    return novalsta
